<!--开气预约-->
<template>
  <div class="security-check-box">
    <PageTitle class="boxTitle" :text="title"></PageTitle>
    <div class="con-box detailContent">
      <div class="primary-tit title">请如实填写以下信息完成申请</div>
      <div>
        <tui-form ref="form">
          <!-- 用户编号（用户编码） -->
          <tui-input label="用户编号" :required="true" :lineLeft="false" placeholder="请输入用户编号(表号)" v-model="formData.userNo"></tui-input>

          <!-- 服务地址（地址） -->
          <tui-input label="家庭地址" :required="true" :lineLeft="false" placeholder="请输入地址" v-model="formData.address"></tui-input>

          <!-- 联系电话（联系方式） -->
          <tui-input label="联系电话" :required="true" :lineLeft="false" type="number" placeholder="请输入联系电话" v-model="formData.phone" maxlength="11"></tui-input>

          <!-- 新增日期选择器 -->
          <div class="date-picker-item" @click="showDatePicker">
            <div class="tui-input__label" style="width: 76px;">
              <span class="required-mark" style="color: red;margin-right: 3px;">*</span>预约日期</div>
            <div class="tui-input__content">
              <text v-if="formData.serviceDateStr">{{ formData.serviceDateStr }}</text>
              <text v-else class="tui-placeholder">请选择预约日期</text>
            </div>
          </div>

          <view class="tui-btn__box">
            <tui-button height="84rpx" @click="submit" :disabled="loading" :loading="loading">提交</tui-button>
          </view>
        </tui-form>
      </div>
    </div>
    <div class="con-box tips">
      <!-- 温馨提示内容保持不变 -->
      <div class="warning-tit title">温馨提示</div>
      <div>
        <p class="p">1、按照国家相关法律及法规标准规定，我公司安排专业人员分别为居民用户每2年和非居民用户每1年，提供不少于一次免费安全检查，同时开展安全用气的宣传。请您积极配合我公司的户内安全检查工作，配合在我司安检系统中签字并签收《管道燃气安全使用须知》，如有隐患需签收《户内安全检查隐患整改整改通知单》并对照燃气安全隐患及时整改。</p>
        <p class="p">2、如用户不在家需要提供该项服务可拨打95007或在本微信公众号预约安检模块预约安检，工作人员将在收到预约后尽快与您联系。</p>
        <p class="p">3、注意事项</p>
        <p class="p">1）公司对经营范围内的用户在一个安检周期内提供免费安全检查，不收取任何费用，更换燃气具、软管、燃气设施设备需用户自费进行更换;上门服务时，我公司工作人员均会佩戴工作牌。如有其它公司或外来人员冒充安检员上门，售卖燃气相关设备，请注意甄别是否为重庆中燃城市燃气发展有限公司工作人员。</p>
        <p class="p">2）如安检时用户家中未留人，安检人员会在门上张贴《到访不遇》单，请用户根据到访不遇留言上的电话与安检人员联系预约下次上门安检时间。</p>
      </div>
    </div>

    <FooterTel></FooterTel>
    <!-- 日期选择器组件 -->
    <tui-datetime
        ref="datePicker"
        :type="2"
        title="选择预约日期"
        @confirm="handleDateConfirm"
        @cancel="handleDateCancel"
    ></tui-datetime>
  </div>
</template>

<script>
import PageTitle from '../components/pageTitle.vue'
import FooterTel from '../components/footerTel.vue'
// 引入日期选择器组件
import tuiDatetime from '../../components/thorui/tui-datetime/tui-datetime.vue'

const rules = [
  {
    name: 'userNo',
    rule: ['required'],
    msg: ['请输入用户编号']
  },
  {
    name: 'address',
    rule: ['required'],
    msg: ['请输入地址']
  },
  {
    name: 'phone',
    rule: ['required', 'isMobile'],
    msg: ['请输入联系电话', '请输入正确的手机号']
  },
  // 新增日期验证规则
  {
    name: 'serviceDateStr',
    rule: ['required'],
    msg: ['请选择预约日期']
  }
]

export default {
  name: 'openGasBooking',
  components: {
    PageTitle,
    FooterTel,
    tuiDatetime  // 注册组件
  },
  data() {
    return {
      title: null,
      formData: {
        userNo: '', // 用户编号（用户编码）
        address: '', // 服务地址（地址）
        phone: '', // 联系电话（联系方式）
        openid: '',
        serviceDateStr: '' // 新增预约日期字段
      },
      rules: rules,
      loading: false,
      openId: null
    }
  },
  async onLoad(e) {
    this.title = e.title
    // this.getId()
  },
  methods: {
    // 显示日期选择器
    showDatePicker() {
      this.$refs.datePicker.show()
    },
    // 处理日期选择确认
    handleDateConfirm(result) {
      this.formData.serviceDateStr = result.result
    },
    // 处理日期选择取消
    handleDateCancel() {
      // 可添加取消逻辑
    },
    submit() {
      const vm = this
      if (!vm.$refs.form) return
      this.getId()
      // 表单验证
      vm.$refs.form.validate().then(valid => {
        if (valid) {
          vm.formData.openid = vm.openId
          const data = { ...vm.formData }
          vm.loading = true
          vm.tui
              .request('/api/open-gas-booking/create', 'post', data, false, false, true)
              .then(res => {
                if (res) {
                  uni.showToast({
                    icon: 'success',
                    title: '预约成功'
                  })
                  setTimeout(() => {
                    vm.formData = {
                      userNo: '',
                      address: '',
                      phone: '',
                      openid: '',
                      serviceDateStr: '' // 清空日期字段
                    }
                    uni.redirectTo({
                      url: '/'
                    })
                    vm.loading = false
                  }, 3000)
                } else {
                  uni.showToast({
                    icon: 'error',
                    title: `申请失败，原因：${res.message}`
                  })
                  vm.loading = false
                }
              })
              .catch(() => {
                vm.loading = false
              })
        }
      })
    },
    getId() {
      const vm = this
      vm.openId = uni.getStorageSync('openId')
      // 没有openId跳转获取code页面
      if (!vm.openId) return vm.func.goto('/pages/getCode/index')
    }
  }
}
</script>

<style lang="scss" scoped>
@import '../../static/css/module.scss';
.security-check-box {
  padding-bottom: 20px;
  .boxTitle {
    margin: 10px 14px;
  }
  .detailContent,
  .tips {
    p.p {
      padding: 4px 0;
    }
    padding: 0 18px 20px;
    margin: 14px;
    font-size: 15px;
    line-height: 22px;
    overflow: hidden;
    .title {
      width: 100%;
      height: 30px;
      padding-left: 14px;
      line-height: 30px;
      font-size: 17px;
      font-weight: bold;
      color: #222;
      box-sizing: border-box;
      margin: 10px 0;
    }
    :v-deep .tui-input__wrap {
      padding: 12px 0 12px 8px !important;
    }
    :v-deep .tui-placeholder,
    :v-deep .tui-input__label,
    :v-deep.tui-input__self,
    :v-deep .uni-input-placeholder {
      font-size: 15px !important;
      uni-text,
      text {
        font-size: 15px !important;
      }
    }
    :v-deep .tui-input__required {
      left: 0;
      top: 45%;
    }
    .tui-btn__box {
      padding-top: 30px;
    }
  }
  :v-deep .tui-form__errmsg {
    left: 14px;
    right: 14px;
  }
}

// 新增日期选择器样式
.date-picker-item {
  display: flex;
  align-items: center;
  padding: 12px 0 12px 8px;
  border-bottom: 1px solid #eee;

  .tui-input__label {
    width: 130rpx;
    color: #333;
    font-size: 15px;
  }

  .tui-input__content {
    flex: 1;
    text-align: right;
    padding-right: 10rpx;
    color: #333;
    font-size: 15px;
  }

  .tui-placeholder {
    color: #999;
  }
}
</style>